package com.cysoft.third.echarts.component.legend;

/**
 * @author 玖零
 * @version v0.0.1
 * @project cysoft-third-echarts
 * @package com.cysoft.third.echarts.component.legend
 * @date 2025/3/13 01:35
 * @desc 图例组件配置，用于控制图表中系列的标识和交互。
 * 该类封装了图例组件的各种属性设置，通过这些属性可以对图例的位置、样式、显示内容等进行定制
 */
public class Legend {

    /**
     * 图例类型，默认为 'plain'。可选值有 'plain'（普通图例）和 'scroll'（可滚动图例）。
     */
    private String type = "plain";
    /**
     * 图例的唯一标识符，用于在复杂的图表配置中精确引用该图例。
     */
    private String id;
    /**
     * 是否显示图例，默认为 true。设置为 false 时，图例将不会在图表中显示。
     */
    private Boolean show = true;
    /**
     * 所有图形的 zlevel 值，用于控制图形的层叠顺序。较高的 zlevel 值表示图形会显示在更上层。
     */
    private Integer zlevel;
    /**
     * 组件的 z 值，控制图形的前后顺序，默认为 2。与 zlevel 类似，用于确定图例在图表中的层叠位置。
     */
    private Integer z = 2;
    /**
     * 图例组件离容器左侧的距离，默认为 'auto'。可以是像素值、百分比或 'left'、'center'、'right' 等关键字。
     */
    private Object left = "auto";
    /**
     * 图例组件离容器顶部的距离，默认为 'auto'。可以是像素值、百分比或 'top'、'middle'、'bottom' 等关键字。
     */
    private Object top = "auto";
    /**
     * 图例组件离容器右侧的距离，默认为 'auto'。可以是像素值、百分比或 'right' 等关键字。
     */
    private Object right = "auto";
    /**
     * 图例组件离容器底部的距离，默认为 'auto'。可以是像素值、百分比或 'bottom' 等关键字。
     */
    private Object bottom = "auto";
    /**
     * 图例组件的宽度，默认为 'auto'。可以是像素值或百分比。
     */
    private Object width = "auto";
    /**
     * 图例组件的高度，默认为 'auto'。可以是像素值或百分比。
     */
    private Object height = "auto";
    /**
     * 图例列表的布局朝向，默认为 'horizontal'（水平布局）。可选值还有'vertical'（垂直布局）。
     */
    private String orient = "horizontal";
    /**
     * 图例标记和文本的对齐方式，默认为 'auto'。可选值有 'left'、'center'、'right' 等。
     */
    private String align = "auto";
    /**
     * 图例内边距，默认为 5。可以是单个值表示四周内边距相同，也可以是数组分别指定上、右、下、左的内边距。
     */
    private Object padding = 5;
    /**
     * 图例每项之间的间隔，默认为 10 像素。
     */
    private Integer itemGap = 10;
    /**
     * 图例标记的图形宽度，默认为 25 像素。
     */
    private Integer itemWidth = 25;
    /**
     * 图例标记的图形高度，默认为 14 像素。
     */
    private Integer itemHeight = 14;
    /**
     * 图例标记的样式，通过 ItemStyle 类进行配置。
     */
    private ItemStyle itemStyle;
    /**
     * 图例线条的样式，通过 LineStyle 类进行配置。
     */
    private LineStyle lineStyle;
    /**
     * 图例标记的旋转角度，默认为 'inherit'。可以是具体的角度值。
     */
    private Object symbolRotate = "inherit";
    /**
     * 图例文本的格式化器，可自定义图例文本的显示格式。
     */
    private Object formatter;
    /**
     * 图例选择的模式，默认为 true 表示可选择。可以是布尔值或 'single'（单选）、'multiple'（多选）等字符串。
     */
    private Object selectedMode = true;
    /**
     * 图例关闭时的颜色，默认为 '#ccc'。
     */
    private String inactiveColor = "#ccc";
    /**
     * 图例关闭时的边框颜色，默认为 '#ccc'。
     */
    private String inactiveBorderColor = "#ccc";
    /**
     * 图例关闭时的边框宽度，默认为 'auto'。
     */
    private Object inactiveBorderWidth = "auto";
    /**
     * 图例中各系列的选中状态，键为系列名称，值为布尔值表示是否选中。
     */
    private Map<String, Boolean> selected;
    /**
     * 图例文本的样式，通过 TextStyle 类进行配置。
     */
    private TextStyle textStyle;
    /**
     * 图例标记的图形，默认为 'circle'。可以是内置的图形名称或自定义的 SVG 路径。
     */
    private String icon;
    /**
     * 图例的数据项，可以是字符串数组或包含具体配置的对象数组。
     */
    private List<Object> data;
    /**
     * 图例的背景颜色，默认为 'transparent'（透明）。
     */
    private String backgroundColor = "transparent";
    /**
     * 图例的边框颜色，默认为 '#ccc'。
     */
    private String borderColor = "#ccc";
    /**
     * 图例的边框宽度，默认为 1 像素。
     */
    private Integer borderWidth = 1;
    /**
     * 图例的圆角半径，可以是单个值或数组分别指定四个角的圆角半径。
     */
    private Object borderRadius;
    /**
     * 图例的阴影模糊大小，单位为像素。
     */
    private Integer shadowBlur;
    /**
     * 图例的阴影颜色。
     */
    private String shadowColor;
    /**
     * 图例的阴影水平偏移量，单位为像素。
     */
    private Integer shadowOffsetX;
    /**
     * 图例的阴影垂直偏移量，单位为像素。
     */
    private Integer shadowOffsetY;
    /**
     * 图例滚动数据的索引，用于可滚动图例的定位。
     */
    private Integer scrollDataIndex;
    /**
     * 分页按钮之间的间隔，默认为 5 像素。
     */
    private Integer pageButtonItemGap = 5;
    /**
     * 分页按钮与图例项之间的间隔。
     */
    private Integer pageButtonGap;
    /**
     * 分页按钮的位置，默认为 'end'。可选值有 'start'、'end' 等。
     */
    private String pageButtonPosition = "end";
    /**
     * 分页器的格式化字符串，默认为 '{current}/{total}'，用于显示当前页码和总页数。
     */
    private Object pageFormatter = "{current}/{total}";
    /**
     * 分页图标的配置，通过 PageIcons 类进行设置。
     */
    private PageIcons pageIcons;
    /**
     * 分页图标的颜色，默认为 '#2f4554'。
     */
    private String pageIconColor = "#2f4554";
    /**
     * 分页图标不可用时的颜色，默认为 '#aaa'。
     */
    private String pageIconInactiveColor = "#aaa";
    /**
     * 分页图标的大小，默认为 15 像素。
     */
    private Object pageIconSize = 15;
    /**
     * 分页文本的样式，通过 TextStyle 类进行配置。
     */
    private TextStyle pageTextStyle;
    /**
     * 是否开启动画效果，默认为 null 表示使用全局配置。
     */
    private Boolean animation;
    /**
     * 数据更新时的动画时长，默认为 800 毫秒。
     */
    private Integer animationDurationUpdate = 800;
    /**
     * 高亮状态下的样式配置，通过 Emphasis 类进行设置。
     */
    private Emphasis emphasis;
    /**
     * 选择器的配置，用于筛选图例项。
     */
    private Object selector;
    /**
     * 选择器标签的样式配置，通过 SelectorLabel 类进行设置。
     */
    private SelectorLabel selectorLabel;
    /**
     * 选择器的位置，默认为 'auto'。
     */
    private String selectorPosition = "auto";
    /**
     * 选择器项之间的间隔，默认为 7 像素。
     */
    private Integer selectorItemGap = 7;
    /**
     * 选择器按钮之间的间隔，默认为 10 像素。
     */
    private Integer selectorButtonGap = 10;
}
